/*
 * QVoipmDaemon.java
 *
 * Criado em 6 de Julho de 2007, 15:59
 */

package qvoipm.sistema;

import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;

/**
 *
 * @author rodrigo
 */
public class QVoipmDaemon implements Daemon {
    
    private Thread threadCertificado;
    private Thread threadQualidade;
    private ServidorCertificado servidorCertificado;
    private ServidorQualidade servidorQualidade;
    
    /**
     * Cria uma nova instância de QVoipmDaemon
     */
    public QVoipmDaemon() {
    }
    
    public void start() {
	/* Inicia threas */
	threadCertificado.start();
	threadQualidade.start();
    }
    
    public void stop() {
	/* tenta parar na boa */
	servidorCertificado.parar();
	servidorQualidade.parar();
	
	try {
	    /* Espera um pouco */
	    Thread.sleep(1000);
	} catch (InterruptedException ex) {
	    ex.printStackTrace();
	}
	
	/* Forca interrupcao das threads */
	if (threadCertificado.isAlive())
	    threadCertificado.interrupt();
	if (threadQualidade.isAlive())
	    threadQualidade.interrupt();
    }
    
    public void destroy() {
	servidorCertificado = null;
	servidorQualidade = null;
	threadCertificado = null;
	threadQualidade = null;
	System.gc();
    }
    
    public void init() {
	/* Cria servidores */
	servidorCertificado = new ServidorCertificado(3707);
	servidorQualidade = new ServidorQualidade(3708);
	
	/* Cria Threads */
	threadCertificado = new Thread(servidorCertificado);
	threadQualidade = new Thread(servidorQualidade);
	
    }
    
    public void init(DaemonContext daemonContext) throws Exception {
	init();
    }
}
